package Controlador;

import java.util.ArrayList;

import javax.swing.JLabel;

/*
 * esta clase nos permite poder generar las diversas etiquetas que se ocuparan a lo largo del programa..
 */
public class Etiquetas {

	//atributos de la clase...
	private ArrayList<JLabel> Estados;//contendra los diversos labels de los estados (PC, IR, etc)
	private ArrayList<JLabel> Ejecucion;//contendra los diversos labels de la ejecucion (instruccion, ingreso, etc)
	private JLabel TituloBoton;//contendra el label que indica que hacen los botones...
	private ArrayList<JLabel> Memoria; //contendra los diversos labels de la memoria (posicion en memoria de los registros, etc)
	private JLabel Tiempo;//contendra el titulo de la barra de progreso y el tiempo a ejecutar...
	
	//constructor de la clase...
	public Etiquetas(){
		
		this.Estados = new ArrayList<JLabel>();
		this.Memoria = new ArrayList<JLabel>();
		this.Ejecucion = new ArrayList<JLabel>();
		this.Tiempo = new JLabel("Tiempo de Ejecucion:");
        this.Tiempo.setFont(new java.awt.Font("Times New Roman", 3, 20));// modificamos el estilo de la letra
		this.TituloBoton = new JLabel("Funcionalidades:");
        this.TituloBoton.setFont(new java.awt.Font("Times New Roman", 3, 20));// modificamos el estilo de la letra

	}

	//metodo que me permite poder rellenar los estados...
	public void RellenaEstados(){
	
		for (int i=0; i<6; i++)
			this.Estados.add(new JLabel());
		
		this.Estados.get(0).setText("Estados");
        this.Estados.get(0).setFont(new java.awt.Font("Times New Roman", 3, 20));// modificamos el estilo de la letra

		this.Estados.get(1).setText("PC:");
        this.Estados.get(1).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Estados.get(2).setText("IR:");
        this.Estados.get(2).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Estados.get(3).setText("LT:");
        this.Estados.get(3).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Estados.get(4).setText("EQ:");
        this.Estados.get(4).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Estados.get(5).setText("R:");        
		this.Estados.get(5).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra

	}
	
	//metodo que nos permite poder rellenar la ejecucion...
	public void RellenaEjecucion(){
		
		for (int i=0; i<7; i++)
			this.Ejecucion.add(new JLabel());
		
		this.Ejecucion.get(0).setText("Ejecucion");
        this.Ejecucion.get(0).setFont(new java.awt.Font("Times New Roman", 3, 20));// modificamos el estilo de la letra

		this.Ejecucion.get(1).setText("Instruccion Actual:");
        this.Ejecucion.get(1).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Ejecucion.get(2).setText("Tecla:");
        this.Ejecucion.get(2).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Ejecucion.get(3).setText("Salida:");
        this.Ejecucion.get(3).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Ejecucion.get(4).setText("Operadores" + "\n" + " de la ALU");
        this.Ejecucion.get(4).setFont(new java.awt.Font("Times New Roman", 3, 20)); // modificamos el estilo de la letra

		this.Ejecucion.get(5).setText("Operador 1:");
        this.Ejecucion.get(5).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		this.Ejecucion.get(6).setText("Operador 2:");
        this.Ejecucion.get(6).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
	}
	
	//metodo que nos permite poder rellenar la memoria...
	public void RellenaMemoria(){
		
		this.Memoria.add(new JLabel("Memoria"));//creamos el primer JLabel con el titulo de la seccion
		this.Memoria.get(0).setFont(new java.awt.Font("Times New Roman", 3, 20));// modificamos el estilo de la letra
		
		this.Memoria.add(new JLabel("Registros"));//creamos el primer JLabel con el titulo de la seccion
		this.Memoria.get(1).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		
		//ahora en la 10 agregamos una con el titulo de Instrucciones...
		this.Memoria.add(new JLabel("Instrucciones"));//creamos el primer JLabel con el titulo de la seccion
		this.Memoria.get(2).setFont(new java.awt.Font("Times New Roman", 1, 14));// modificamos el estilo de la letra
		
	}
	//seccion getters para poder acceder a los diversos estados de la clase...
	public ArrayList<JLabel> getEstados() {
		return Estados;
	}

	public ArrayList<JLabel> getEjecucion() {
		return Ejecucion;
	}

	public JLabel getTituloBoton() {
		return TituloBoton;
	}

	public ArrayList<JLabel> getMemoria() {
		return Memoria;
	}

	public JLabel getTiempo() {
		return Tiempo;
	}
}